Trait হলো Groovy তে একটি বিশেষ ধরনের ধারণা যা মাল্টিপল ইনহেরিটেন্স (একাধিক শ্রেণী থেকে উত্তরাধিকার পাওয়ার সুবিধা) প্রদান করতে সাহায্য করে। Traits হলো এমন কিছু কোডের ব্লক যা বিভিন্ন ক্লাসে mixin হিসেবে ব্যবহার করা যায়। এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায় এবং ছোট ছোট ফাংশনালিটির ক্লাসে সহজেই যুক্ত করা যায়। Traits Java এর interface এর মতো, তবে এটি মেথডের ডিফল্ট ইমপ্লিমেন্টেশন এবং state (ভেরিয়েবল) সংরক্ষণ করতে পারে।
Groovy তে Trait ডিক্লার করতে trait
কীওয়ার্ড ব্যবহার করা হয়। Traits এর মধ্যে মেথড এবং properties ডিক্লার করা যায়। পরে, যে কোনো ক্লাসে implements
কিওয়ার্ড দিয়ে Traits যুক্ত করা যায়।
trait Greetable {
String name
def greet() {
println "Hello, $name!"
}
}
এখানে Greetable
নামে একটি Trait ডিক্লার করা হয়েছে, যা একটি name
property এবং greet()
মেথড সংজ্ঞায়িত করে।
Greetable
Trait কে একটি ক্লাসে যুক্ত করে তার মেথড এবং প্রপার্টিগুলি ব্যবহার করা সম্ভব।
class Person implements Greetable {}
def person = new Person()
person.name = "Alice"
person.greet() // Output: Hello, Alice!
এখানে Person
ক্লাস Greetable
Trait কে implements
করেছে, ফলে Person
ক্লাসে greet()
মেথড এবং name
প্রপার্টি ব্যবহার করা যাচ্ছে।
Groovy তে একটি ক্লাস একাধিক Traits ইমপ্লিমেন্ট করতে পারে।
trait Greetable {
String name
def greet() {
println "Hello, $name!"
}
}
trait Walkable {
def walk() {
println "I am walking."
}
}
class Person implements Greetable, Walkable {}
def person = new Person()
person.name = "Bob"
person.greet() // Output: Hello, Bob!
person.walk() // Output: I am walking.
এখানে Person
ক্লাস Greetable
এবং Walkable
দুটি Traits ইমপ্লিমেন্ট করেছে, যার ফলে এটি দুইটি Traits এর মেথড এবং প্রপার্টি ব্যবহার করতে পারছে।
Traits এ ডিফল্ট মেথড সংজ্ঞায়িত করা যায় এবং ক্লাসে মিক্সিন করার পর এই মেথডগুলি ব্যবহার করা সম্ভব। Traits এ ডিফল্ট ইমপ্লিমেন্টেশন থাকা মেথড প্রয়োজনে ওভাররাইড করাও সম্ভব।
trait Eatable {
def eat() {
println "Eating food."
}
}
class Animal implements Eatable {
// Eatable এর মেথড ওভাররাইড করে কাস্টম ইমপ্লিমেন্টেশন
def eat() {
println "Animal is eating."
}
}
def animal = new Animal()
animal.eat() // Output: Animal is eating.
এখানে Animal
ক্লাস Eatable
Trait এর eat()
মেথডকে ওভাররাইড করে নিজস্ব ইমপ্লিমেন্টেশন দিয়েছে।
Groovy তে Trait Composition এর সুবিধাও রয়েছে, যার মাধ্যমে একটি Trait অন্য একটি Trait এর মেথড বা প্রপার্টি ব্যবহার করতে পারে।
trait Speaker {
def speak() {
println "Speaking..."
}
}
trait LoudSpeaker extends Speaker {
def speakLoudly() {
speak()
println "Speaking loudly!"
}
}
class Person implements LoudSpeaker {}
def person = new Person()
person.speak() // Output: Speaking...
person.speakLoudly() // Output: Speaking... Speaking loudly!
এখানে LoudSpeaker
Trait Speaker
Trait কে এক্সটেন্ড করেছে এবং speak()
মেথড ব্যবহার করছে।
Groovy তে Traits একটি বিশেষ বৈশিষ্ট্য যা মাল্টিপল ইনহেরিটেন্স এবং কোড রিইউজ করতে সহায়তা করে। Traits এর মাধ্যমে ডিফল্ট মেথড ইমপ্লিমেন্টেশন, প্রপার্টি ডিফাইন করা এবং একাধিক Trait মিক্সিন করা সম্ভব। Traits মূলত কোড সংক্ষিপ্ত ও সহজ করে এবং Object-Oriented প্রোগ্রামিং এর নমনীয়তা বৃদ্ধি করে।
common.read_more